Skip to content

test(generators): cover identity map and service layer#442

Merged
JerrettDavis merged 1 commit into
mainfrom
test/identity-service-layer-coverage-413
May 30, 2026
Merged

test(generators): cover identity map and service layer#442
JerrettDavis merged 1 commit into
mainfrom
test/identity-service-layer-coverage-413

Conversation

@JerrettDavis

Copy link
Copy Markdown
Owner

Summary

  • harden Identity Map and Service Layer Operation generation for nested/typed host shapes
  • expand TinyBDD scenarios with emit validation, defaults, malformed type arguments, nested hosts, and invalid signature branches
  • preserve containing partial wrappers for nested generator hosts

Validation

  • dotnet format PatternKit.slnx --verify-no-changes --verbosity minimal
  • dotnet test test\PatternKit.Generators.Tests\PatternKit.Generators.Tests.csproj --configuration Release --no-restore --no-build -p:TestTfmsInParallel=false --logger "console;verbosity=minimal"
  • local coverage pass: PatternKit.Generators 96.9%, IdentityMapGenerator 99.0%, ServiceLayerOperationGenerator 99.3%

Refs #413

Copilot AI review requested due to automatic review settings May 30, 2026 02:16
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR pushes coverage of the IdentityMap and ServiceLayerOperation source generators by (a) teaching them to preserve nested containing-type partial wrappers, and (b) expanding TinyBDD scenarios to exercise emit success, defaults, malformed type arguments, nested hosts, and additional invalid handler/rule signature branches.

Changes:

  • Generators now emit containing-type partial wrappers (with appropriate accessibility/modifiers) around the generated factory, via new GetContainingTypes/AppendTypeDeclaration helpers.
  • Generator tests add scenarios for default names + host shapes (abstract/sealed/struct), nested hosts (including private protected / protected internal), malformed typeof arguments, and more invalid handler/rule shapes; tests now also assert Compilation.Emit success.
  • GeneratorResult record is extended with EmitSuccess and EmitDiagnostics.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
src/PatternKit.Generators/IdentityMap/IdentityMapGenerator.cs Emit containing-type partial wrappers and refactor type-declaration emission into helpers.
src/PatternKit.Generators/ServiceLayer/ServiceLayerOperationGenerator.cs Same nested-wrapper emission for ServiceLayerOperation generator, with computed indents for member/body.
test/PatternKit.Generators.Tests/IdentityMapGeneratorTests.cs New scenarios for host shapes, nested hosts, malformed type args, extra invalid selectors, and emit verification.
test/PatternKit.Generators.Tests/ServiceLayerGeneratorTests.cs New scenarios for host shapes, nested hosts, malformed type args, extra invalid handler/rule signatures, and emit verification.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

    12 files      12 suites   11m 3s ⏱️
 3 794 tests  3 794 ✅ 0 💤 0 ❌
11 783 runs  11 783 ✅ 0 💤 0 ❌

Results for commit 9fabe58.

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Summary
  Generated on: 05/30/2026 - 02:24:16
  Coverage date: 05/30/2026 - 02:21:44 - 05/30/2026 - 02:24:04
  Parser: MultiReport (12x Cobertura)
  Assemblies: 5
  Classes: 1616
  Files: 551
  Line coverage: 96.4%
  Covered lines: 43283
  Uncovered lines: 1577
  Coverable lines: 44860
  Total lines: 96556
  Branch coverage: 81.6% (13447 of 16475)
  Covered branches: 13447
  Total branches: 16475
  Method coverage: 96.6% (8429 of 8720)
  Full method coverage: 90% (7852 of 8720)
  Covered methods: 8429
  Fully covered methods: 7852
  Total methods: 8720

PatternKit.Core                                                                                                     95.4%
  PatternKit.Application.ActivityTracking.ActivityGateState                                                          100%
  PatternKit.Application.ActivityTracking.ActivityLease                                                              100%
  PatternKit.Application.ActivityTracking.ActivityRecord                                                             100%
  PatternKit.Application.ActivityTracking.ActivityTracker                                                            100%
  PatternKit.Application.Aggregates.AggregateCommandHandler<T1, T2, T3>                                              100%
  PatternKit.Application.Aggregates.AggregateCommandResult<T>                                                        100%
  PatternKit.Application.Aggregates.AggregateRoot<T1, T2>                                                            100%
  PatternKit.Application.AntiCorruption.AntiCorruptionLayer<T1, T2>                                                 90.4%
  PatternKit.Application.AntiCorruption.AntiCorruptionResult<T>                                                      100%
  PatternKit.Application.AuditLog.AuditLogAppendResult<T>                                                           85.7%
  PatternKit.Application.AuditLog.InMemoryAuditLog<T1, T2>                                                          95.4%
  PatternKit.Application.BoundedContexts.BoundedContextAdapter                                                       100%
  PatternKit.Application.BoundedContexts.BoundedContextCapability                                                   83.3%
  PatternKit.Application.BoundedContexts.BoundedContextDescriptor                                                   95.4%
  PatternKit.Application.ContextMaps.ContextMapDescriptor                                                           96.8%
  PatternKit.Application.ContextMaps.ContextMapRelationship                                                          100%
  PatternKit.Application.DataMapping.DataMapper<T1, T2>                                                             94.6%
  PatternKit.Application.DataMapping.DataMapperError                                                                  90%
  PatternKit.Application.DataMapping.DataMapperResult<T>                                                            84.6%
  PatternKit.Application.DomainEvents.DomainEventDispatcher<T>                                                      95.4%
  PatternKit.Application.DomainEvents.DomainEventDispatchResult                                                      100%
  PatternKit.Application.DomainServices.DomainServiceOperation<T1, T2>                                               100%
  PatternKit.Application.DomainServices.DomainServiceRegistry<T1, T2>                                                100%
  PatternKit.Application.EventSourcing.EventStoreAppendResult                                                        100%
  PatternKit.Application.EventSourcing.InMemoryEventStore<T1, T2>                                                   97.9%
  PatternKit.Application.EventSourcing.StoredEvent<T1, T2>                                                            80%
  PatternKit.Application.FeatureToggles.FeatureToggleDecision                                                       87.5%
  PatternKit.Application.FeatureToggles.FeatureToggleRule<T>                                                         100%
  PatternKit.Application.FeatureToggles.FeatureToggleSet<T>                                                         96.9%
  PatternKit.Application.IdentityMap.IdentityMap<T1, T2>                                                             100%
  PatternKit.Application.IdentityMap.IdentityMapResult<T>                                                           92.8%
  PatternKit.Application.MaterializedViews.MaterializedView<T1, T2>                                                 98.4%
  PatternKit.Application.Repository.InMemoryRepository<T1, T2>                                                      92.8%
  PatternKit.Application.Repository.RepositoryResult<T>                                                             93.3%
  PatternKit.Application.ServiceLayer.ServiceLayerOperation<T1, T2>                                                 96.7%
  PatternKit.Application.ServiceLayer.ServiceLayerResult<T>                                                         94.7%
  PatternKit.Application.ServiceLayer.ServiceLayerRule<T>                                                            100%
  PatternKit.Application.Specification.Specification<T>                                                              100%

@codecov

codecov Bot commented May 30, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.66%. Comparing base (4596396) to head (9fabe58).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #442      +/-   ##
==========================================
+ Coverage   91.34%   96.66%   +5.32%     
==========================================
  Files         551      551              
  Lines       44820    44860      +40     
  Branches     6458     6464       +6     
==========================================
+ Hits        40941    43366    +2425     
+ Misses       1589     1494      -95     
+ Partials     2290        0    -2290     
Flag Coverage Δ
unittests 96.66% <100.00%> (+5.32%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions

Copy link
Copy Markdown
Contributor

🔍 PR Validation Results

Version: ``

✅ Validation Steps

  • Build solution
  • Run tests
  • Build documentation
  • Dry-run NuGet packaging

📊 Artifacts

Dry-run artifacts have been uploaded and will be available for 7 days.


This comment was automatically generated by the PR validation workflow.

@JerrettDavis JerrettDavis merged commit f76f5e0 into main May 30, 2026
13 checks passed
@JerrettDavis JerrettDavis deleted the test/identity-service-layer-coverage-413 branch May 30, 2026 02:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants